//#include <iostream>
//using namespace std;
//
//const int N = 5000;
//int a[N] = { 0 };
//
//int main()
//{
//	int n;
//	cin >> n;
//
//	for (int i = 1; i <= n; i++)
//	{
//		a[i] = -1;
//	}
//	for (int i = 2; i <= n; i++)
//	{
//		for (int j = 1; j <= n; j++)
//		{
//			if (j % i == 0)
//			{
//				a[j] *= -1;
//			}
//		}
//	}
//	for (int i = 0; i <= n; i++)
//	{
//		if (a[i] == -1)
//		{
//			cout << i << " ";
//		}
//	}
//
//	return 0;
//}



//#include <iostream>
//using namespace std;
//
//int main()
//{
//	int n;
//	cin >> n;
//	const int N = 110;
//	int a[N];
//	int b[N] = {0};
//	
//	for (int i = 0; i < n; i++)
//	{
//		cin >> a[i];
//		for (int j = i; j >= 0; j--)
//		{
//			if (a[i] > a[j])
//			{
//				b[i]++;
//			}
//		}
//	}
//	
//	for (int i = 0; i < n; i++)
//	{
//		cout << b[i] << " ";
//	}
//	
//	return 0;
// } 



//#include <iostream>
//using namespace std;
//
//int main()
//{
//	int n;
//	cin >> n;
//	const int N = 1000;
//	int a[N];
//	for (int i = 0; i < n; i++)
//	{
//		cin >> a[i];
//	}
//	
//	for (int i = 0; i < n - 1; i++)
//	{
//		for (int j = 0; j < n - 1 - i; j++)
//		{
//			if (a[j] < a[j + 1])
//			{
//				int tmp = a[j];
//				a[j] = a[j + 1];
//				a[j + 1] = tmp;
//			}
//		}
//	}
//	
//	for(int i = 0; i < n; i++)
//	{
//		cout << a[i] << endl;
//	}
//	
//	return 0;
//}



#include <iostream>
using namespace std;

const int N = 25;
int a[N][N];

int main()
{
	int n;
	cin >> n;
	
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j <= i; j++)
		{
			if (j == 0 || j == i)
			{
				a[i][j] = 1;
			}
			if (i >= 2 && j >= 1)
			{
				a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
			}
			cout << a[i][j] << " ";
		}
		cout << endl;
	}
	
	return 0;
}
